關於 ES6 的新增語法 :
1.讓原有 JS 撰寫更為精簡 ( 語法糖 )。
2.讓 JS 撰寫觀念更為直覺、簡便 (新方法)。
新的箭頭函式讓原有的函式寫法可以更精簡、方便,以下新舊方式來比對。
// 原來函式寫法
const callName = function (someone) {
return '我是 ' +someone;
}
console.log(callName('小明'));
// 輸出結果 : 我是 小明
// 改成箭頭函式寫法
const callName = (someone) => { // 把function省略掉,增加 =>
return '我是 ' +someone;
}
console.log(callName('小明'));
// 輸出結果 : 我是 小明
1. 如果程式碼內容是表達式時,可以把大括號 {} 跟 reurn 拿掉,因為 => 後會自動 reurn。
const callName = (someone) => '我是 ' +someone; //可以把大括號{} 跟 reurn拿掉
console.log(callName('小明'));
// 輸出結果 : 我是 小明
2. 如果只有一個參數時
// 一個參數時
const callName = someone => '我是 ' +someone; //可以參數 () 拿掉,
console.log(callName('小明'));
// 輸出結果 : 我是 小明
// 兩個參數時就要保留()
const callName = (a, b) => '我是 ' +someone;
console.log(callName('小明'));
// 沒有參數時
const callName = () => '我是小明'; // 要保留空 ()
可以參考文章 連結
// 傳統陣列寫法
const arr = [15, 12, 63, 67, 1421, 124, 567, 235];
const arrDouble = arr.map(function(num) {
return num * 2 ;
});
console.log(arrDouble);
// 輸出結果 : (8) [30, 24, 126, 134, 2842, 248, 1134, 470]
// map可以將陣列數值一一取出,再回傳到新陣列,適合陣列數值需要一一變動的方法。
// 箭頭函式寫法
const arr = [15, 12, 63, 67, 1421, 124, 567, 235, 12, 45];
const arrDouble = arr.map(num => num * 2); // 因為只有num一個參數,可以省略()用縮寫寫法
console.log(arrDouble);
// 輸出結果 : (8) [30, 24, 126, 134, 2842, 248, 1134, 470]
// 傳統陣列寫法
const average = function () {
const nums = Array.from(arguments);
const total = nums.reduce(function (acc, val) {
return acc + val
}, 0);
console.log(total);
return total / nums.length;
}
console.log(average(1, 2, 3, 4, 5));
// 箭頭函式寫法
const average = (...num) => num.reduce((acc, val) => acc + val, 0) / nums.length;
// 傳統陣列寫法 用AJAX方法取得遠端資料
const person = {
data: {
},
getData: function() {
const vm = this; // 宣告另外的的變數,這邊 this 指向 person
$.ajax({
url: 'https://randomuser.me/api/',
dataType: 'json',
success: function (data) {
console.log(data);
vm.data = data.results[0];
console.log('person.data', person.data);
}
});
}
}
person.getData();
// 箭頭函式寫法
const person = {
data: {
},
getData: function() {
// const vm = this;
// 箭頭函式沒有自己的 this ,不用另外宣告,此時會使用外層的作用域
$.ajax({
url: 'https://randomuser.me/api/',
dataType: 'json',
success: (data) => { // 省略 function
console.log(data);
this.data = data.results[0]; // 改回 this
console.log('person.data', person.data);
}
});
}
}
person.getData();